Constructors এবং Destructors হল Object-Oriented Programming (OOP)-এ ব্যবহৃত গুরুত্বপূর্ণ ধারণা, যা অবজেক্টের জীবনচক্র (lifecycle) পরিচালনা করে। রুবি ভাষায়, Constructors এবং Destructors দুটি ধারণা কার্যকরভাবে ব্যবহৃত হয় ক্লাসের ইনস্ট্যান্স তৈরি (অবজেক্ট নির্মাণ) এবং অবজেক্ট ধ্বংসের সময়।
রুবি ভাষায় Constructors এবং Destructors এর কাজ এবং ব্যবহার ভিন্নভাবে পরিচালিত হয়।
১. Constructors in Ruby (কনস্ট্রাকটর)
একটি Constructor হল একটি বিশেষ মেথড যা অবজেক্টের ইনস্ট্যান্স তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি ক্লাসের প্রতিটি নতুন অবজেক্ট তৈরি হওয়ার সময় ইনিশিয়ালাইজেশন প্রক্রিয়া পরিচালনা করে।
রুবি ভাষায়, constructor হিসেবে initialize মেথড ব্যবহৃত হয়। এটি ক্লাসের কোন ইনস্ট্যান্স তৈরি হওয়ার সাথে সাথে কল হয় এবং প্রয়োজনীয় ডেটা বা স্টেট ইনিশিয়ালাইজ করে।
Syntax:
class ClassName
def initialize(parameters)
# Constructor code (object initialization)
end
endউদাহরণ:
class Person
def initialize(name, age)
@name = name # instance variable
@age = age # instance variable
end
def greet
puts "Hello, my name is #{@name} and I am #{@age} years old."
end
end
# Creating an instance (object) of the Person class
person = Person.new("John", 30)
person.greet # Output: Hello, my name is John and I am 30 years old.এখানে, initialize মেথডটি constructor হিসেবে কাজ করছে। যখন Person.new("John", 30) কল করা হয়, তখন initialize মেথডটি স্বয়ংক্রিয়ভাবে কল হয় এবং অবজেক্টের অবস্থা ইনিশিয়ালাইজ করে।
initialize মেথডের বিশেষ বৈশিষ্ট্য:
- এটি শুধুমাত্র একটি ক্লাসের ইনস্ট্যান্স তৈরি করার সময় কল হয়।
initializeমেথডের প্যারামিটার হিসেবে কোনো ভ্যালু পাস করা যেতে পারে, যা অবজেক্টের স্টেট বা প্রপার্টি সেট করতে ব্যবহৃত হয়।initializeমেথডের মাধ্যমে অবজেক্টের instance variables (যেমন@name,@age) সেট করা হয়।
২. Destructors in Ruby (ডেস্ট্রাকটর)
একটি Destructor হল একটি বিশেষ মেথড যা একটি অবজেক্ট ধ্বংস বা মেমরি ফ্রি করার সময় কল হয়। তবে, রুবি ভাষায় explicit destructor (যেমন অন্যান্য ভাষায় destroy বা finalize মেথড থাকে) ব্যবহৃত হয় না, কারণ রুবি garbage collection মেকানিজম ব্যবহার করে। এর মাধ্যমে, অবজেক্টের মেমরি মুক্তি এবং অবজেক্ট ধ্বংস স্বয়ংক্রিয়ভাবে পরিচালিত হয়।
রুবি ভাষায় মেমরি ব্যবস্থাপনা এবং অবজেক্ট ধ্বংসের জন্য finalize মেথডের ধারণা রয়েছে, তবে এটি খুব কম ব্যবহৃত হয় এবং সাধারণত ব্যবহারকারী নিজে তেমন কিছু করতে হয় না।
Garbage Collection:
রুবি garbage collector (GC) ব্যবহার করে অবজেক্টের জীবনের শেষে অপ্রয়োজনীয় মেমরি বা অবজেক্টগুলিকে মুছে ফেলে, যা প্রোগ্রামের মেমরি ব্যবস্থাপনা সহজ করে তোলে।
finalize মেথড উদাহরণ:
রুবিতে ObjectSpace.define_finalizer ব্যবহার করে আপনি একটি ফাইনালাইজার বা ডেস্ট্রাকটর যুক্ত করতে পারেন, যা অবজেক্ট ধ্বংস হওয়ার সময় কোনো নির্দিষ্ট কোড চালাবে।
class Resource
def initialize
puts "Resource initialized"
end
def finalize
puts "Resource is being finalized"
end
end
resource = Resource.new
ObjectSpace.define_finalizer(resource, resource.method(:finalize).to_proc)এখানে, যখন resource অবজেক্টটি ধ্বংস হবে, তখন finalize মেথডটি স্বয়ংক্রিয়ভাবে কল হবে। তবে, এটা সবার জন্য প্রয়োজনীয় নয়, কারণ রুবি এরকম কাজ করতে গার্বেজ কালেকশন ব্যবহার করে।
৩. Difference between Constructor and Destructor in Ruby
| বৈশিষ্ট্য | Constructor | Destructor |
|---|---|---|
| কাজ | অবজেক্ট ইনিশিয়ালাইজেশন বা প্রস্তুত করার জন্য | অবজেক্টের জীবনের শেষের দিকে কোনো এক্সট্রা ক্লিনআপ কার্যক্রম সম্পাদন করা |
| কল হয় | initialize মেথড কল হয় অবজেক্ট তৈরি হওয়ার সময় | রুবিতে কোনো explicit destructor নেই, garbage collection দ্বারা স্বয়ংক্রিয়ভাবে ক্লিনআপ করা হয় |
| ব্যবহার | অবজেক্টের প্রপার্টি বা স্টেট ইনিশিয়ালাইজ করতে ব্যবহৃত হয় | Garbage collector ব্যবহার করে মেমরি ম্যানেজমেন্ট সিস্টেমে অবজেক্ট ধ্বংস হয় |
| মেথড নাম | initialize | সাধারণত finalize (Garbage collection ব্যবহৃত হলে) |
সারসংক্ষেপ
- Constructors (
initializeমেথড) রুবিতে অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয় এবং এটি অবজেক্টের স্টেট ইনিশিয়ালাইজ করে। - Destructors রুবিতে সরাসরি ব্যবহৃত না হলেও, garbage collection ব্যবস্থাপনা দ্বারা অবজেক্টের মেমরি মুক্ত করে।
finalizeমেথড ব্যবহার করে আপনি অবজেক্টের ধ্বংসের সময় ক্লিনআপ বা বিশেষ কার্যক্রম করতে পারেন, তবে এটি প্রাকৃতিকভাবে প্রয়োগ করা হয় না এবং গার্বেজ কালেকশনের মাধ্যমে কাজ হয়।
রুবি প্রোগ্রামিং ভাষায় constructors এবং destructors এর ব্যবহার অবজেক্টের জীবনচক্র নিয়ন্ত্রণে সহায়ক, এবং রুবি এর মেমরি ব্যবস্থাপনা ও গার্বেজ কালেকশন ব্যবস্থার মাধ্যমে বেশিরভাগ কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করে।
Read more